package com.itheima.thread.utils.semaphore.demo01;

import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;

public class SemaphoreThread implements Runnable {

    // 创建信号量对象 ， 限制只允许2个线程获取到许可证
    private Semaphore semaphore = new Semaphore(2) ;

    @Override
    public void run() {     // 这个run只允许2个线程同时执行

        try {

            semaphore.acquire();                    // 获取许可证
            System.out.println(Thread.currentThread().getName() + "------获取到了许可证....");
            TimeUnit.SECONDS.sleep(8);      // 模拟任务的执行时间

            System.out.println(Thread.currentThread().getName() + "------释放许可证....");
            semaphore.release();                    // 释放许可证

        } catch (InterruptedException e) {
            e.printStackTrace();
        }

    }


}
